Computer technology has progressed, and continues to do so, at a rapid pace. The time period measured from the introduction into the marketplace of one generation of a computing platform to the availability of the next generation continues to shrink. Inevitably, the underlying technologies incorporated into each successive generation of computing platform evolve, making some technologies obsolete or unusable within newer systems.
Consider the case where a computing platform transitions from one type of processor, e.g., microprocessor, to another. In some cases, such a transition will be entirely backward compatible with existing, or legacy, technologies. In other cases, however, the transition will mean that legacy technologies may no longer function or at least require some technological “work-around” to continue operating within the newer computing platform.
When a computing platform transitions to different technology, e.g., in the case of switching from one microprocessor to another, much of the software for the original computing platform may need to be rewritten, or at least re-compiled, for use on the next generation computing platform. As is known, each microprocessor executes or understands an instruction set that is specific to that processor. The instruction set for one processor is likely entirely foreign to the other. In such cases, legacy computer programs may not execute or function properly on the next generation computing platform.
Often, a computer program incorporates different software libraries that are developed and/or made available by third parties. Third party developers may choose not to undertake the work necessary to make the software library compatible with the next generation computing platform. This means that any software developer that makes a product that relies upon a legacy software library, in general, is faced with the choice of having to drop the features enabled by the legacy software library from the product, develop a version of the software library from scratch that is compatible with the new computing platform, or discontinue the product altogether.